package com.example.newbook.entity;

/**
 * 分页类
 */
public class Pageable{
    private int totalCount = 0; //总记录数
    private int totalPage = 0; //总页数
    private int currPage = 1; //当前页码
    private int pageSize = 10; //页容量
    private Object list; //每页显示的数据记录
    private int start; //开始页码
    private int end; //结束页码


    public Pageable() {
    }

    public Pageable(int totalCount, int currPage, int pageSize, Object list) {
        this.totalCount = totalCount;
        this.currPage = currPage;
        this.pageSize = pageSize;
        this.list = list;
        this.totalPage = (int)Math.ceil((double)totalCount / this.pageSize);

        /*
        1.判断当前页是否为第一页，不是，则添加上一页元素。
        2.遍历绘制页码，那么根据百度分页的逻辑，我们定义遍历的起始和结束变量start和end，总页码数totalPage，当前页码为currPage：
当总页码小于10的时候，start为1，end为totalPage；
总页码大于10，当前页码小于等于5，start为1，end为10；
总页码大于10，当前页码小于等于总页码数-4，start为totalPage-9，end为totalPage
总页码大于10，当前页介于上两个之间，start为currPage - 5，end为currPage + 4；


        3.判断当前页是否为最后一页，不是，则添加下一页元素。
        * */
        start = 1;
        end = totalPage;
        if (totalPage > 10) {
            if (currPage <= 5) {
                start = 1;
                end = 10;
            } else if (currPage >= totalPage - 4) {
                start = totalPage - 9;
                end = totalPage;
            } else {
                start = currPage - 5;
                end = currPage + 4;
            }
        }

       /* //1.显示10个页码
        if(totalPage < 10){
            start = 1;
            end = totalPage;
        }
        else{

            start = currPage - 5;
            end = currPage + 4;

            //2.如果前面不够5个，后面补齐10个
            if(start < 1){
                start = 1;
                end = start + 9;
            }
            //3.如果后面不足4个，前面补齐10个
            if(end > totalPage){
                end = totalPage;
                start = end - 9;
            }
        }*/

    }

    public int getTotalCount() {
        return totalCount;
    }

    public void setTotalCount(int totalCount) {
        this.totalCount = totalCount;
    }

    public int getTotalPage() {
        /*
        * 方法1、   总页数 = （总记录数 + 页容量  - 1） / 页容量
         方法2、 可使用Math.ceil()函数，该函数需要强类型转换（向上取整是指：浮点数取整）
            总页数 = (int) Math.ceil(总记录数/页容量)
        * */

        return this.totalPage;
    }



    public int getCurrPage() {
        return currPage;
    }

    public void setCurrPage(int currPage) {
        this.currPage = currPage;
    }

    public int getPageSize() {
        return pageSize;
    }

    public void setPageSize(int pageSize) {
        this.pageSize = pageSize;
    }

    public Object getList() {
        return list;
    }

    public void setList(Object list) {
        this.list = list;
    }

    //获取开始页码
    public int getStart(){
        return this.start;
    }

    //获取结束页码
    public int getEnd(){
        return this.end;
    }


}
